home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / maspar_d.tar / maspar_dec / pz2mpl-dpu.h < prev    next >
C/C++ Source or Header  |  1992-09-14  |  11KB  |  342 lines

  1. /**********************************************************************
  2.  ***                                                                ***
  3.  ***    PARZ-Library for MasPar MPL                                 ***
  4.  ***                                                                ***
  5.  ***    (c) by University Stuttgart, Germany, 1991, 1992            ***
  6.  ***                                                                ***
  7.  ***    Don't edit this file !!!                                    ***
  8.  ***                                                                ***
  9.  *********************************************************************/
  10.  
  11. #ifndef PZ2MPLDPUH
  12. #define PZ2MPLDPUH
  13.  
  14. #include <stdio.h>
  15. #include <math.h>
  16. #include <mpl.h>
  17. #include <time.h>
  18. #include <maspar/mp_time.h>
  19. #include <maspar/mp_libc.h>
  20.  
  21. /********************* DEFINES **************************************/
  22.  
  23. #define SINGLE 0
  24. #define DOUBLE 1
  25.  
  26. #if 0
  27. #define PRECISION DOUBLE
  28. #endif
  29.  
  30. #define PINT     plural INT
  31. #define PCHAR    plural CHAR
  32. #define PREAL    plural REAL
  33. #define PBOOL    plural BOOL
  34.  
  35. #define isActive()    (actPE[i])
  36.  
  37. #define Eval(a)       callIt|=(int)globalor((plural int)(activePE[i]=(activePE[i]&126)|(isActive()?(a):0))&(plural char)1);\
  38.                       actPE[i]=((plural short)activePE[i])&(plural short)1
  39.  
  40. #define ForAllPE        for(i=0;i<PEMAX;i++) if (((plural int) InitialActSet [i]) & (plural int) 1)
  41. #define ForAllActivePE  for(i=0;i<PEMAX;i++) if (isActive ()) 
  42.  
  43. #define    NO_REDUCE 0
  44. #define   MIN_REDUCE 1
  45. #define   MAX_REDUCE 2
  46. #define   SUM_REDUCE 3
  47. #define   MUL_REDUCE 4
  48. #define   AND_REDUCE 5
  49. #define    OR_REDUCE 6
  50. #define FIRST_REDUCE 7
  51. #define  LAST_REDUCE 8
  52. #define   OWN_REDUCE 9
  53.  
  54. /********************* TYPES *****************************************/
  55.  
  56. typedef long           INT;
  57. typedef unsigned char  CHAR;
  58. #if PRECISION == DOUBLE
  59. typedef double         REAL;
  60. #else
  61. typedef float          REAL;
  62. #endif
  63. typedef long           BOOL;
  64.  
  65. typedef union {
  66.         INT   i;
  67.         CHAR  c;
  68.         BOOL  b;
  69.         REAL  r;
  70.         } MemItem;
  71.  
  72. typedef plural union {
  73.         INT   i;
  74.         CHAR  c;
  75.         BOOL  b;
  76.         REAL  r;
  77.         } PMemItem;
  78.  
  79. typedef PMemItem *plural PMemPtr;
  80.  
  81. typedef struct {
  82.          PMemItem         *vector;
  83.          int               vecSize;
  84.          int               indIndex;
  85.          struct timeval    startTime;
  86.         } VACTRECORD;
  87.  
  88.  
  89. /************************** VARIABLES *******************************/
  90.  
  91. /*** predeclared variables ***/
  92.  
  93. extern  MemItem   _dpuTERMCH;
  94. extern  MemItem   _dpuACTTRANS;
  95. extern  MemItem   _dpuMAXTRANS;
  96. extern PMemItem  *_VRESULT;
  97. extern PMemItem  *_ID;
  98.  
  99. /*** input / output ***/
  100.  
  101. extern FILE  *in, *out;
  102.  
  103. extern void OpenInput (),  OpenInputChars (),  CloseInput ();
  104. extern void OpenOutput (), OpenOutputChars (), CloseOutput ();
  105.  
  106. /*** maintenance ***/
  107.  
  108. extern struct timezone timeZone;
  109. extern plural char       *activePE, *InitialActSet;
  110. extern plural short      *actPE;
  111. extern       PMemItem    *VDisp [];
  112. extern       PMemPtr     *plural VIndDisp;    
  113. extern        int         IndIndex, *IndSizeDisp;
  114. extern        INT         outPortTmp, inPortTmp;
  115. extern        int         callIt;
  116. extern       PMemItem    *vTmp, *vTmp2;
  117. extern        MemItem     _tmpItem1, _tmpItem2, _tmpItem3;
  118.  
  119. /*************************** FUNCTIONS ******************************/
  120.  
  121. /*** maintenance ***/
  122.  
  123. extern void InitVDisplay (), ResetVDisplay ();
  124. extern void SetVDisplay (int level, VACTRECORD  *buf,
  125.                        PMemItem *vTo, int vectorSize);
  126.  
  127. extern void SetAct (plural char str, int  indx);
  128. extern void VSetSet (PMemItem  *plural arrayStart,
  129.           int       start,
  130.           int       ende,
  131.           char     *str);
  132. extern void SetPos (int  *startPtr, int  startValue, int length);
  133.  
  134. extern plural INT      NewVMem (int size);
  135. extern       PMemItem *plural VRef (plural INT refIndex);
  136.  
  137. extern void DPUPrintTime (struct timeval *startTime, 
  138.            char           *procName), 
  139.             DPUStartTime (struct timeval *begin);
  140. extern void INIT_DPU (int argc, 
  141.            char *argv [], 
  142.            int NumOfPEs, 
  143.            int NumOfPorts, 
  144.            int globalVecSize, 
  145.            PMemItem *vecAdr, 
  146.            int hasNew, 
  147.            char *progName, 
  148.            int xnetUse, 
  149.            int xDim, 
  150.            int yDim, 
  151.            int Recording);
  152. extern int  EXIT (int returnCode);
  153.  
  154. extern void EmitRecording (char statementTyp);
  155. extern void IncStatCounter ();
  156.  
  157. extern char *New (int amount);
  158.  
  159. /*** stack ***/
  160.  
  161. extern void PUSHVi (int indx, plural INT val), 
  162.             PUSHVr (int indx, plural REAL val), 
  163.             PUSHVc (int indx, plural CHAR val), 
  164.             PUSHVb (int indx, plural BOOL val);
  165. extern PINT  POPVi  (int indx);
  166. extern PREAL POPVr  (int indx);
  167. extern PBOOL POPVb  (int indx);
  168. extern PCHAR POPVc  (int indx);
  169.  
  170. /*** control statements ***/
  171.  
  172. extern void PushActSet (), PopActSet ();
  173.  
  174. /*** math ***/
  175.  
  176. extern plural INT   VRandomI ();
  177. extern plural CHAR  VRandomC ();
  178. extern plural INT   VRandomB ();
  179. extern plural REAL  VRandomR ();
  180.  
  181. extern plural INT  _VMOD (plural INT lhs, plural INT rhs), 
  182.                     Vabs (plural INT val);
  183. extern plural INT  _VIPOWER (plural INT base, plural INT exp);
  184. extern plural REAL _VRIPOWER (plural REAL rb, plural INT ie), 
  185.                    _VRRPOWER (plural REAL base, plural REAL exp);
  186.  
  187. /*** input / output ***/
  188.  
  189. extern plural BOOL VInBool ();
  190. extern void        VInChars (plural CHAR *plural var, INT maxLen);
  191. extern plural INT  VInInt ();
  192. extern plural REAL VInReal ();
  193.  
  194. extern void VOutInt (plural INT val, int len);
  195. extern void VOutReal (plural REAL val, int len, int prec);
  196. extern void VOutChars (plural CHAR  *buf, 
  197.         INT min);
  198. extern void VOutBool (plural BOOL buf);
  199.  
  200. /*** strings ***/
  201.  
  202. extern void       _VStrCopy (plural CHAR *str1, char *str2);
  203. extern plural INT _VStrCmpCon (plural CHAR *str1, char *str2);
  204. extern plural INT _VStrCmp (plural CHAR *str1, plural CHAR *str2);
  205.  
  206. /*** reduction ***/
  207.  
  208. /*** reduce variable ***/
  209.  
  210. extern void   GenProp_ (INT    outPort,
  211.            INT    inPort,
  212.            int    reduceCode,
  213.            void (*reduceLabel) (),
  214.            int    OutAll,
  215.            int    InAll), 
  216.               _GenProp ();
  217. extern void   GenPropI (int indx, plural INT *to, plural INT from), 
  218.               GenPropR (int    indx,
  219.            plural REAL  *to,
  220.            plural REAL   from), 
  221.               GenPropC (int indx, plural CHAR *to, plural CHAR from), 
  222.               GenPropB (int   indx,
  223.            plural BOOL *to,
  224.            plural BOOL  from);
  225.  
  226. extern void  RedSumI (plural INT var), RedMulI (plural INT var);
  227. extern void  RedSumR (plural REAL var), RedMulR (plural REAL var);
  228.  
  229. extern void  RedMaxI (plural INT var), RedMinI (plural INT var);
  230. extern void  RedMaxR (plural REAL var), RedMinR (plural REAL var);
  231. extern void  RedMaxC (plural CHAR var), RedMinC (plural CHAR var);
  232. extern void  RedMaxB (plural BOOL var), RedMinB (plural BOOL var);
  233. extern void  RedAndB (plural BOOL var), RedOrB (plural BOOL var);
  234.  
  235. extern void  RedFirstI (plural INT var), RedLastI (plural INT var);
  236. extern void  RedFirstR (plural REAL var), RedLastR (plural REAL var);
  237. extern void  RedFirstC (plural CHAR var), RedLastC (plural CHAR var);
  238. extern void  RedFirstB (plural BOOL var), RedLastB (plural BOOL var);
  239.  
  240. extern void   Red_ ();
  241. extern INT   _RedI ();
  242. extern REAL  _RedR ();
  243. extern CHAR  _RedC ();
  244. extern BOOL  _RedB ();
  245.  
  246. extern void   OwnRedI (int   indx,      plural INT   val), 
  247.               OwnRedR (    int   indx,      plural REAL  val);
  248. extern void   OwnRedC (      int   indx, plural CHAR  val), 
  249.               OwnRedB ( int   indx,      plural BOOL  val);
  250.  
  251. extern void   OwnRed  ();
  252. extern INT   _OwnRedI (void  (*reduceLabel) ());
  253. extern REAL  _OwnRedR (void  (*reduceLabel) ());
  254. extern CHAR  _OwnRedC (void  (*reduceLabel) ());
  255. extern BOOL  _OwnRedB (void  (*reduceLabel) ());
  256.  
  257. /*** propagate reduce ***/
  258.  
  259. extern void  PRedSumI (PMemItem      *source,
  260.            plural INT   **target), 
  261.              PRedMulI (PMemItem      *source,
  262.            plural INT   **target);
  263. extern void  PRedSumR (PMemItem      *source,
  264.            plural REAL  **target), 
  265.              PRedMulR (PMemItem      *source,
  266.            plural REAL  **target);
  267.  
  268. extern void  PRedMaxI (PMemItem      *source,
  269.            plural INT   **target), PRedMinI (PMemItem      *source,
  270.            plural INT   **target);
  271. extern void  PRedMaxR (PMemItem      *source,
  272.            plural REAL  **target), PRedMinR (PMemItem      *source,
  273.            plural REAL  **target);
  274. extern void  PRedMaxC (PMemItem      *source,
  275.            plural CHAR  **target), PRedMinC (PMemItem      *source,
  276.            plural CHAR  **target);
  277. extern void  PRedMaxB (PMemItem      *source,
  278.            plural INT   **target), PRedMinB (PMemItem      *source,
  279.            plural INT   **target);
  280.  
  281. extern void  PRedAndB (PMemItem      *source,
  282.            plural INT   **target),  PRedOrB (PMemItem      *source,
  283.            plural INT   **target);
  284.  
  285. extern void  PRedFirstI (PMemItem      *source,
  286.          plural INT   **target), PRedLastI (PMemItem      *source,
  287.          plural INT   **target);
  288. extern void  PRedFirstR (PMemItem      *source,
  289.            plural REAL  **target), PRedLastR (PMemItem      *source,
  290.            plural REAL  **target);
  291. extern void  PRedFirstC (PMemItem      *source,
  292.            plural CHAR  **target), PRedLastC (PMemItem      *source,
  293.            plural CHAR  **target);
  294. extern void  PRedFirstB (PMemItem      *source,
  295.            plural INT   **target), PRedLastB (PMemItem      *source,
  296.            plural INT   **target);
  297.  
  298. /*** data transfer ***/
  299.  
  300. extern void    Connect_ (INT fromPort, INT toPort),   
  301.                Connect (int indx, plural INT toPE);
  302. extern void  Biconnect_ (INT fromPort, INT toPort), 
  303.              Biconnect (int indx, plural INT toPE);
  304. extern void Disconnect (INT fromPort), DisconnectAll ();
  305.  
  306. extern void ConnectIn_ (INT inPort),    _ConnectIn ();
  307. extern void ConnectInOut_ (INT inPort, INT outPort), _ConnectInOut ();
  308.  
  309. extern plural BOOL ConnectedIn (int indx),  ConnectedInOut (int indx);
  310. extern plural BOOL ConnectedOut (int indx, INT outPort), 
  311.                    ConnectedOutIn (int indx, INT outPort, INT inPort);
  312.  
  313. extern int  _LOAD (plural char *plural to,
  314.            plural char *from,
  315.            int         size), _STORE (plural char  *to,
  316.         plural char  *plural from,
  317.         int          size), _LOAD_PE (int       pe,
  318.           PMemItem  *plural to,
  319.           MemItem  *from,
  320.           int       size), _STORE_PE (int       pe,
  321.            PMemItem  *plural to,
  322.            MemItem  *from,
  323.            int       size);
  324. extern void _MOVE_VS (PMemItem  *plural to,
  325.            MemItem  *from,
  326.            int       size), _MOVE_VV (PMemItem  *plural to,
  327.            PMemItem  *plural from,
  328.            plural     int    size);
  329.  
  330. extern plural BOOL EQUAL_VS (PMemItem *plural vec,
  331.               MemItem *sca,
  332.               int      amount);
  333.  
  334.  
  335. /*** graphics *********************************************/
  336.  
  337. typedef struct colrec { MemItem r, g, b; } COLREC;
  338.  
  339. #endif
  340.  
  341. /*** End of pz2mpl-dpu.h ***/
  342.